home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO003.dsk / DEMOS / LOTTO.COMPUTER.bas < prev    next >
BASIC Source File  |  2012-02-16  |  10KB  |  230 lines

  1. 1  GOSUB 10000: FOR X = 768 TO 777: READ I: POKE X,I: NEXT X
  2. 2  ONERR  GOTO 9000
  3. 3  DATA 104,168,104,166,223,154,72,152,72,96
  4. 4 FILE$ = "DEMOS/LOGIC.GROUP":A = 0:D$ =  CHR$(4)
  5. 5  PRINT  CHR$(4);"NOMON C"
  6. 10  DIM MN(100,6),WN(6),EB(4),FL(100,6,2),G(100)
  7. 15  GOTO 1000
  8. 42  REM  PLAY THE LOTTARIES
  9. 43  HOME : IF A <1  THEN  FLASH : VTAB 12: HTAB 10: PRINT "NO TICKETS ENTERED": NORMAL : FOR Q = 1 TO 1000: NEXT Q: GOTO 1000
  10. 44 V = 0
  11. 45  HOME : INVERSE 
  12. 46  HTAB 12: PRINT ":                :"
  13. 47  HTAB 12: PRINT " ARE YOU A WINNER "
  14. 48  HTAB 12: PRINT ":                :"
  15. 49  NORMAL : VTAB 6: POKE 34,5
  16. 50  IF WN(1) >0  THEN  INPUT "USING WINNING NUMBERS (Y/N): ";Q$: IF Q$ = "Y"  THEN 141
  17. 51  HOME 
  18. 55  PRINT "INPUT THE WINNING NUMBERS. AFTER EACH   NUMBER, HIT THE <RTN> KEY."
  19. 60  FOR I = 1 TO 6
  20. 70  INPUT WN(I): NEXT I: HOME 
  21. 80  PRINT "INPUT THE EARLY BIRD NUMBERS. HIT THE   <RTN> KEY AFTER EACH NUMBER. IF YOU DO  NOT QUALIFY FOR THE EARLY BIRD, ENTER   A '0'"
  22. 90  FOR I = 1 TO 4
  23. 100  INPUT EB(I)
  24. 110  IF EB(I) = 0  THEN  HOME : GOTO 130
  25. 120  NEXT I: HOME 
  26. 130  PRINT "INPUT THE BONUS NUMBER"
  27. 140  INPUT B
  28. 141  POKE 34,0: HOME 
  29. 143  INVERSE : FOR X = 1 TO 39: HTAB X: PRINT " ";: NEXT X: PRINT " ": NORMAL 
  30. 144  VTAB 1: HTAB 16: FLASH : PRINT "CHECKING": NORMAL : PRINT 
  31. 145  PRINT "WINNING NUMBERS: ";: FOR X = 1 TO 6: PRINT WN(X);" ";: NEXT X
  32. 146  PRINT 
  33. 147  PRINT "BONUS NUMBER: ";B
  34. 148  IF EB(1) >0  THEN  PRINT "EARLY BIRD :";: FOR X = 1 TO 4: PRINT EB(X);" ";: NEXT X: PRINT : PRINT : GOTO 150
  35. 149  PRINT 
  36. 150  INVERSE : FOR X = 1 TO 40: HTAB X: PRINT " ";: NEXT X: NORMAL : POKE 34,7: VTAB 10
  37. 152  FOR C = 1 TO A
  38. 153  FOR X = 1 TO 6:FL(C,X,0) = 0:FL(C,X,1) = 0: NEXT X
  39. 155 P = 0:Z = 0:T = 0
  40. 160  FOR X = 1 TO 6: FOR Y = 1 TO 6
  41. 170  IF MN(C,X) = WN(Y)  THEN P = P +1:FL(C,X,1) = 1
  42. 180  NEXT Y,X
  43. 190  FOR X = 1 TO 6
  44. 200  IF MN(C,X) = B  THEN Z = 1
  45. 205  NEXT X
  46. 210  FOR X = 1 TO 6: FOR Y = 1 TO 4
  47. 220  IF MN(C,X) = EB(Y)  THEN T = T +1:FL(C,X,0) = 1
  48. 230  NEXT Y,X
  49. 240  IF P = 3  THEN  PRINT "YOU GOT 3-NUMBERS RIGHT": GOTO 310
  50. 250  IF P = 4  THEN  PRINT "YOU GOT 4-NUMBERS RIGHT": GOTO 310
  51. 255  IF P = 5  AND Z = 1  THEN  PRINT "YOU WON SECOND PRIZE": GOTO 310
  52. 260  IF P = 5  THEN  PRINT "YOU GOT 5-NUMBERS RIGHT": GOTO 310
  53. 280  IF P = 6  THEN  INVERSE : FLASH : PRINT "GRAND PRIZE WINNER": NORMAL : GOTO 310
  54. 290  IF T = 4  THEN  PRINT "YOU ARE AN EARLY BIRD WINNER": GOTO 310
  55. 300  NEXT C: PRINT 
  56. 302  IF V = 1  THEN  PRINT "THAT'S ALL......": GOTO 600
  57. 304  IF V = 0  THEN  SPEED= 1: HTAB 15: INVERSE : PRINT "S O R R Y": NORMAL : SPEED= 255: GOTO 600
  58. 310 V = 1:K = A: IF C >K  THEN 600
  59. 311  IF T = 4  AND P = 3  THEN  PRINT "AND THE EARLY BIRD"
  60. 312  FOR X = 1 TO 6
  61. 313  IF T = 4  AND P = 3  THEN : GOTO 315
  62. 314  IF FL(C,X,1) = 1  THEN  FLASH : PRINT MN(C,X);: NORMAL : PRINT " ";:FL(C,X,1) = 0: GOTO 319
  63. 315  IF FL(C,X,0) = 1  AND T = 4  THEN  INVERSE : PRINT MN(C,X);: NORMAL : PRINT " ";:FL(C,X,0) = 0: GOTO 319
  64. 316  PRINT MN(C,X);" ";: GOTO 319
  65. 319  NEXT X: PRINT : PRINT : NEXT C
  66. 600  VTAB 23: PRINT "HIT ANY KEY TO CONTINUE:"
  67. 605  POKE 34,0
  68. 610  VTAB 23: HTAB 27: GET Z$: GOTO 1000
  69. 999  END 
  70. 1000  REM  MAIN MENU
  71. 1001  HOME 
  72. 1002  PRINT : HTAB 12: INVERSE : PRINT ":              :"
  73. 1003  HTAB 12: PRINT " LOTTO COMPUTER "
  74. 1005  HTAB 12: PRINT ":              :"
  75. 1006  NORMAL 
  76. 1008  VTAB 8
  77. 1009  HTAB 10: PRINT "0) PLAY LOTTARY": PRINT 
  78. 1010  HTAB 10: PRINT "1) READ IN TICKETS": PRINT 
  79. 1020  HTAB 10: PRINT "2) ENTER TICKET NUMBERS": PRINT 
  80. 1030  HTAB 10: PRINT "3) REVIEW AND EDIT TICKETS": PRINT 
  81. 1040  HTAB 10: PRINT "4) SAVE DATA": PRINT 
  82. 1050  HTAB 10: PRINT "5) NUMBER GENERATOR": PRINT 
  83. 1060  HTAB 10: PRINT "6) EXIT": PRINT 
  84. 1070  HTAB 10: PRINT "SELECTION:"
  85. 1080  VTAB 22: HTAB 21: INPUT S$
  86. 1090 S =  ASC(S$)
  87. 1100  IF S <48  OR S >54  THEN  PRINT  CHR$(7): GOTO 1080
  88. 1110 S = S -47: ON S GOTO 42,3000,4000,5000,6000,7000,8000
  89. 2000  REM     INSTRUCTIONS
  90. 2995  GOTO 1000
  91. 3000  REM        READ IN DATA FROM DISC
  92. 3010  HOME 
  93. 3020  HTAB 12: INVERSE : PRINT ":               :"
  94. 3030  HTAB 12: PRINT " READ IN TICKETS "
  95. 3040  HTAB 12: PRINT ":               :"
  96. 3045  NORMAL 
  97. 3050  VTAB 10
  98. 3060  PRINT "IS DATA FROM ";: INVERSE : PRINT FILE$;: NORMAL : PRINT " FILE-(Y/N): ": INPUT Q$
  99. 3080  IF Q$ = "Y"  THEN 3100
  100. 3090  IF Q$ = "N"  THEN  PRINT : INPUT "DATA FILE NAME: ";FILE$
  101. 3100  VTAB 20: HTAB 16: FLASH : PRINT "READING": NORMAL 
  102. 3110  PRINT D$;"OPEN ";FILE$
  103. 3120  PRINT D$;"READ ";FILE$
  104. 3130  INPUT A
  105. 3140  FOR X = 1 TO A: FOR Y = 1 TO 6
  106. 3150  INPUT MN(X,Y): NEXT Y,X
  107. 3160  PRINT D$;"CLOSE ";FILE$
  108. 3950  FOR X = 1 TO 1000: NEXT X: GOTO 1000
  109. 4000  REM        ENTER DATA
  110. 4010  HOME 
  111. 4020  HTAB 13: INVERSE : PRINT ":             :"
  112. 4030  HTAB 13: PRINT " ENTER TICKETS "
  113. 4040  HTAB 13: PRINT ":             :": NORMAL : PRINT 
  114. 4045  VTAB 6
  115. 4050  POKE 34,5
  116. 4060 A = A +1
  117. 4070  PRINT "TICKET NO. ";A
  118. 4080  FOR X = 1 TO 6
  119. 4090  INPUT MN(A,X): NEXT X
  120. 4100  INPUT "IS THIS CORRECT-(Y/N): ";Q$
  121. 4110  IF Q$ = "Y"  THEN 4130
  122. 4115  IF Q$ = "N"  THEN 4070
  123. 4120  GOTO 4100
  124. 4130  INPUT "CONTINUE-(Y/N): ";Q$
  125. 4140  IF Q$ = "Y"  THEN A = A +1: HOME : GOTO 4070
  126. 4150  IF Q$ = "N"  THEN  GOTO 4170
  127. 4160  GOTO 4130
  128. 4170  POKE 34,0: GOTO 1000
  129. 5000  REM    REVIEW AND EDIT
  130. 5005  HOME 
  131. 5010  PRINT 
  132. 5020  INVERSE : HTAB 13: PRINT ":             :"
  133. 5030  HTAB 13: PRINT " REVIEW & EDIT "
  134. 5040  HTAB 13: PRINT ":             :": NORMAL 
  135. 5050  VTAB 20: PRINT "<ESC> ESCAPE TO MENU.": PRINT "<RTN> CONTINUE TO REVIEW/EDIT": PRINT "--> SCAN UP.": PRINT "<-- SCAN DOWN": POKE 34,6: POKE 35,19
  136. 5075  VTAB 8
  137. 5080  FOR C = 1 TO A
  138. 5085  HOME 
  139. 5090  VTAB 8: PRINT "POSITION OF TICKET IN FILE: ";: INVERSE : PRINT C: NORMAL 
  140. 5100  PRINT "THE SIX TICKETS NUMBERS ARE:": PRINT 
  141. 5110 V = 11: FOR X = 1 TO 6: VTAB V: HTAB 20: PRINT MN(C,X):V = V +1: NEXT X
  142. 5130 V = 11:H = 20:T = 1
  143. 5140  VTAB V: HTAB (H -1): PRINT ">";: GET Q$
  144. 5145  IF Q$ =  CHR$(8)  AND T = 6  THEN  GOSUB 5300:T = 1:V = V -5: GOTO 5140
  145. 5150  IF Q$ =  CHR$(8)  THEN  GOSUB 5300:T = T +1:V = V +1: GOTO 5140
  146. 5160  IF Q$ =  CHR$(21)  AND T = 1  THEN  GOSUB 5300:T = 6:V = V +5: GOTO 5140
  147. 5170  IF Q$ =  CHR$(21)  THEN  GOSUB 5300:T = T -1:V = V -1: GOTO 5140
  148. 5180  IF Q$ =  CHR$(13)  THEN  NEXT C: GOTO 5270
  149. 5190  IF Q$ =  CHR$(27)  THEN  POKE 34,0: POKE 35,24: HOME : GOTO 1000
  150. 5200 S =  ASC(Q$) -48: IF S >0  AND S <10  THEN 5220
  151. 5210  PRINT "<CTRL-G>": GOTO 5140
  152. 5220  VTAB V: HTAB H: PRINT S;: GET Q$
  153. 5230  IF Q$ =  CHR$(13)  THEN  VTAB V: HTAB (H +1): PRINT " ":MN(C,T) = S: GOTO 5140
  154. 5240 U =  ASC(Q$) -48: IF U > -1  AND U <10  THEN 5260
  155. 5250  PRINT "<CTRL-G>": GOTO 5140
  156. 5260  VTAB V: HTAB (H +1): PRINT U:MN(C,T) = S *10 +U: GOTO 5140
  157. 5270  POKE 34,0: POKE 35,24: HOME : VTAB 12: HTAB 15: INVERSE : PRINT "THAT'S ALL": NORMAL : FOR X = 1 TO 1000: NEXT X: GOTO 1000
  158. 5300  VTAB V: HTAB (H -1): PRINT " ";MN(C,T): RETURN 
  159. 5990  VTAB 12: HTAB 13: FLASH : PRINT "NOT AVAILABLE": NORMAL : FOR O = 1 TO 1000: NEXT O
  160. 5995  GOTO 1000
  161. 6000  REM        SAVE DATA TO DISC
  162. 6010  HOME 
  163. 6020  HTAB 14: INVERSE : PRINT ":            :"
  164. 6030  HTAB 14: PRINT " SAVE TICKETS "
  165. 6040  HTAB 14: PRINT ":            :": NORMAL 
  166. 6050  VTAB 10
  167. 6060  PRINT "SAVE DATA UNDER ";: INVERSE : PRINT FILE$;: NORMAL : PRINT " (Y/N):";: INPUT Q$
  168. 6070  IF Q$ = "Y"  THEN 6090
  169. 6080  IF Q$ = "N"  THEN  PRINT : INPUT "SAVE UNDER WHAT FILE NAME: ";FILE$
  170. 6090  VTAB 20: HTAB 17: FLASH : PRINT "SAVING": NORMAL 
  171. 6100  PRINT D$;"OPEN ";FILE$
  172. 6110  PRINT D$;"DELETE ";FILE$
  173. 6120  PRINT D$;"OPEN ";FILE$
  174. 6130  PRINT D$;"WRITE ";FILE$
  175. 6140  PRINT A
  176. 6150  FOR X = 1 TO A: FOR Y = 1 TO 6
  177. 6160  PRINT MN(X,Y): NEXT Y,X
  178. 6170  PRINT D$;"CLOSE ";FILE$
  179. 6850  FOR X = 1 TO 1000: NEXT X
  180. 6900  GOTO 1000
  181. 7000  REM        TICKET GENERATOR
  182. 7001 F = 0
  183. 7010  HOME 
  184. 7015  INVERSE 
  185. 7020  HTAB 12: PRINT ":               :"
  186. 7030  HTAB 12: PRINT " LOTTO GENERATOR "
  187. 7040  HTAB 12: PRINT ":               :"
  188. 7045  NORMAL 
  189. 7047  POKE 34,5
  190. 7050  VTAB 10
  191. 7060  HTAB 14: PRINT "1) LOTTARIO": PRINT : HTAB 14: PRINT "2) LOTTO 649": PRINT : HTAB 14: PRINT "SELECTION:"
  192. 7070  VTAB 14: HTAB 25: INPUT S$
  193. 7080 S =  VAL(S$): IF S <1  OR S >2  THEN  PRINT "<CTRL-G>": GOTO 7070
  194. 7090  IF S = 1  THEN S = 39: GOTO 7110
  195. 7100 S = 49
  196. 7110  HOME : VTAB 12: HTAB 12: INPUT "NUMBER OF TICKETS: ";N
  197. 7115  HOME : VTAB 12
  198. 7120  PRINT "WOULD YOU LIKE THE GENERATED NUMBERS"
  199. 7130  INPUT "TO BE ENTERED AS THE CURRENT FILE(Y/N)";Q$
  200. 7140  IF Q$ = "Y"  THEN F = 1:A = N
  201. 7150  HOME 
  202. 7160  FOR C = 1 TO N
  203. 7165  FOR X = 1 TO 6
  204. 7170 G(X) =  INT( RND(1) *S +1): NEXT X
  205. 7180  FOR R = 1 TO 5: FOR Q = R +1 TO 6
  206. 7190  IF G(R) = G(Q)  THEN 7165
  207. 7195  NEXT Q,R
  208. 7200 I = 0
  209. 7210  FOR V = 5 TO 34  STEP 5:I = I +1
  210. 7220  PRINT  TAB( V)G(I);: IF F = 1  THEN MN(C,I) = G(I)
  211. 7230  NEXT V: PRINT : PRINT : NEXT C
  212. 7240  PRINT : HTAB 8: FLASH : PRINT "HIT ANY KEY TO CONTINUE": NORMAL : GET T$
  213. 7990  POKE 34,0
  214. 7995  GOTO 1000
  215. 8000  REM        EXIT PROGRAM
  216. 8010  HOME 
  217. 8020  END 
  218. 9000  REM        ERROR HANDLING
  219. 9001  POKE 34,0
  220. 9003 EN =  PEEK(222)
  221. 9010  CALL 768
  222. 9011  IF EN = 8  THEN  FLASH : PRINT : PRINT : HTAB 15: PRINT "I/O ERROR": NORMAL : FOR X = 1 TO 1000: NEXT X:A = 0: GOTO 1000
  223. 9012  IF EN = 5  THEN : FLASH : PRINT : PRINT : HTAB 15: PRINT "END OF DATA": NORMAL : FOR T = 1 TO 1000: NEXT T:A = 0: GOTO 1000
  224. 9013  IF EN = 6  THEN  FLASH : PRINT : PRINT : HTAB 13: PRINT "FILE NOT FOUND": NORMAL : FOR T = 1 TO 1000: NEXT T:A = 0: GOTO 1000
  225. 9014  IF EN = 255  THEN  GOTO 1000
  226. 9015  IF EN = 53  THEN 1000
  227. 9016  IF EN = 9  THEN  PRINT : HTAB 15: FLASH : PRINT "DISK FULL": NORMAL : FOR T = 1 TO 1000: NEXT T: GOTO 1000
  228. 9018  POKE 216,0
  229. 9020  RESUME : GOTO 1000
  230. 10000  TEXT : HOME : VTAB 9: HTAB 10: PRINT "PROGRAM BY: ANDY RAUER": PRINT : HTAB 14: PRINT "DATE: SEPT/84": FOR X = 1 TO 2500: NEXT X: RETURN